import {ScrollText} from "../ScrollText/ScrollText.js";

// 类型类
function typeClass(cup) {
    this.coef = 1;
    // 获得容器
    this.cup = cup;
    if(!cup) return false;

    // 子组件
    this.label = null;

    // 结构初始化
    this.__initStruct();

    // 获取组件框
    this.TypeClass = this.cup.querySelector(".TypeClass");
    // 获取按钮
    this.input = this.cup.querySelector("input");
    // 获取图标
    this.typeImg = this.cup.querySelector(".typeImg");
}

// 类共通项
typeClass.prototype.__typeNum = 0;

// 结构初始化
typeClass.prototype.__initStruct = function() {
    let templet = `
        <!-- 类组件 -->
        <div class="TypeClass">
            <label for="typeClass_${typeClass.prototype.__typeNum}">
                <input type="radio" id="typeClass_${typeClass.prototype.__typeNum ++}" name="">
                <span class="icon">
                    <i class="typeImg" style=""></i>
                </span>
                <!-- 滚动文字组件 -->
                <div class="label">
                </div>
            </label>
        </div>
    `;

    this.cup.innerHTML = templet;

    // 文字
    this.label = ScrollText(this.cup.querySelector(".label"));
}

// 获取容器
typeClass.prototype.getCup = function() {
    return this.cup;
}

// 获得框架
typeClass.prototype.getInput = function() {
    return this.input;
}

// 设置文字
typeClass.prototype.setText = function(text) {
    if(typeof text !== "string" || !this.label)
        return false;

    this.label.setText(text);
}

// 设置图像
typeClass.prototype.setImg = function(imgUrl) {
    if(typeof imgUrl !== "string")
        return false;

    this.typeImg.style.backgroundImage = `url(${imgUrl})`;
}

// 设置类组
typeClass.prototype.setType = function(theType) {
    this.input.name = "typeClassifier_" + theType;
}

// 大小调整
typeClass.prototype.setSize = function(coef) {
    if(!this.label)
        return false;
    this.coef = coef || this.coef;

    this.label.setRate(this.coef);
    this.TypeClass.style.setProperty("--controlLen", String(window.innerWidth * this.coef));
}

function createTypeClass(cup) {
    return new typeClass(cup || null);
}

export var TypeClass = createTypeClass;